`

belongs_to 多级关联关系

阅读更多
有一种情况,是这样的c属于b,b属于a,但是我们有时候想建立c属于a的关系,也就是c.a替代原来的c.b.a,那么可以使用through和has_one的结合使用来实现这个.

例如


1)
class A
  has_one :b
end

class B
  belongs_to :a
  has_one :c
end

class C
  belongs_to :b
  has_one :a, :through => b
end


注意:   belongs_to 不能和through一起使用,至于原因,我看了rails官方解释,但是看不懂.


2)
还有一些其他的解决方式,例如delegate也可以解决这个问题
class A
  has_one :b
end

class B
  belongs_to :a
  has_one :c
end

class C
  belongs_to :b
  delegate :a, :to => :b, :allow_nil => true
end

分享到:
评论

相关推荐

    validates_existence:验证 Rails 模型belongs_to 关联是否存在

    这个插件库添加了 ActiveRecord 模型,一种在保存时检查:belongs_to关联是否实际存在的方法。 这是通过向基本验证模块添加validates_existence_of器来实现的。 它还支持:allow_nil => true/false 、 :allow_new => ...

    activemodel-associations, 用于普通 ruby 对象的has_many和belongs_to宏.zip

    activemodel-associations, 用于普通 ruby 对象的has_many和belongs_to宏 ActiveModel::Associations 用于普通 ruby 对象的has_many 和 belongs_to 宏。安装将此行添加到你的应用程序的Gemfile中:gem 'activemodel-

    administrate-field-belongs_to_search:该插件将搜索功能添加到Administrate的belongs_to关联中

    管理::字段::属于搜索 一个插件,用于搜索 Rails引擎中的belongs_to关联。用法将其添加到您的Gemfile : gem 'administrate-field-belongs_to_search' 运行捆绑程序以安装: bundle install 将其添加到“管理”仪表...

    belongs_to_hstore:使用postgresql hstore列创建ActiveRecord所属_关联

    gem 'belongs_to_hstore' 然后执行: $ bundle 或将其自己安装为: $ gem install belongs_to_hstore 用法 使用hstore列创建关联: class Audit < ActiveRecord :: Base include BelongsToHstore :: ...

    关于Rails中的表关联的程序

    Rails提供了四种基本的关联类型:` belongs_to`、` has_one`、` has_many` 和 `has_and_belongs_to_many`。这些关联允许我们建立对象之间的关系,从而在编程时简化数据的存取。 1. `belongs_to` 关联: 这种关联...

    ThinkPHP关联模型操作实例分析

    通常我们所说的关联关系包括下面三种: ◇ 一对一关联 : ONE_TO_ONE , 包括 HAS_ONE 和 BELONGS_TO ◇ 一对多关联 : ONE_TO_MANY , 包括 HAS_MANY 和 BELONGS_TO ◇ 多对多关联 : MANY_TO_MANY 关联定义 数据表...

    thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)

    本文整理总结了thinkPHP3.x常用的...BELONGS_TO=2 BELONGS_TO 关联定义 HAS_MANY=3 HAS_MANY 关联定义 MANY_TO_MANY=4 MANY_TO_MANY 关联定义 THINK_VERSION 框架版本号 这些预定义常量不会随着环境的变化而变化。 二、

    activerecord-belongs_to_if:允许您通过以下方式管理预加载条件

    用法class User < ActiveRecord> { activity_type == "Comment" } belong_to :issue , if : -> { activity_type == "Issue" } belong_to :pull_request , if : -> { activity_type == "PullRequest" }end user ....

    Redis 支持的活动提要时间线.zip

    您可以明确指定这些选项...class Comment < ActiveRecord::Base include Timeline::Track belongs_to :author, class_name: "User" belongs_to :post track :new_comment, actor: :author, followers: :post_...

    fixture_dependencies:SequelActiveRecord夹具加载器,用于处理依赖关系图

    支持many_to_one / belongs_to,one_to_many / has_many,many_to_many / has_and_belongs_to_many和has_one / one_to_one关联 以不违反外键约束的方式加载灯具的依赖关系图 有一个非常简单的API...

    ruby声明式语法的实现例子

     belongs_to :user end has_many和belongs_to其实是Topic类的class method,标准写法是: 代码如下: class Topic < ActiveRecord::Base  Topic.has_many(:posts)  Topic.belongs_to(:user) end 那么has_...

    model_sandbox

    数据模型设计 1.活动记录模型 用户 包含用户的属性,与“产品”的has_many关联和与“帐户”的... 一个与User的belongs_to关系关联。 has_many与Entries的关联,这是实际的货币交易(请参见下文)。 has_many与Balan

    association_callbacks:ActiveRecord关联的回调

    belongs_to :article end 然后,您通常需要将Comment内容反规范化为Post ,反之亦然。 这是在帖子上反规范last_comment_at的标准方法: class Comment < ActiveRecord :: Base belongs_to :article after_...

    Laravel开发-belongs-to-one

    总之,“belongs-to-one”关系是Laravel中处理一对一关联的核心工具。正确使用它可以极大地提高代码的可读性和效率,使得数据库操作更加简洁和高效。通过深入理解和熟练运用这一特性,开发者能够更好地构建基于...

    Laravel开发-belongs-to-through

    在Laravel框架中,"belongs-to-through"是一种高级关系,它允许我们定义两个模型之间的间接关系,通过一个中间模型。这种关系在处理复杂的数据关联时非常有用,特别是当我们需要通过第三个模型来连接两个模型时。...

    详解YII关联查询

    在这个例子中,`Post`与`User`的关系是`BELONGS_TO`,通过`Post`的`author_id`字段与`User`关联。这里的`VarName`是`author`,表示一个用户对象。 2. **User.php** ```php class User extends CActiveRecord { ...

    Ruby on Rails中的ActiveRecord编程指南

     偏好 has_many :through 胜于 has_and_belongs_to_many。 使用 has_many :through 允许在 join 模型有附加的属性及验证   # 使用 has_and_belongs_to_many class User < ActiveRecord::Base has_and_...

    微Reddit

    ApplicationRecord belongs_to :user has_many :commentsendclass User < ApplicationRecordhas_many :postshas_many :commentsendclass Comment < ApplicationRecord belongs_to :user belongs_to :postend...

    显示关联轨道NYC04-SENG-FT-053120

    创建has_many和belongs_to关联。 通过控制台和db/seeds.rb构建关联的数据。 使用关联提供的方法查询关联数据。 将关联数据嵌入视图中。 遍历显示单个实例的视图内的关联数据。博客类别在本课程中,我们将设置一个...

Global site tag (gtag.js) - Google Analytics