有一种情况,是这样的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
例如
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
发表评论
-
rails console 记录命令历史
2020-03-20 10:53 3861: 打开文件: vim ~/.irbrc,添加如下内容: ... -
mysql dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
2019-12-16 16:43 483今天一连串的神操作导致连接mysql一直报错,dyld: Li ... -
ruby gsub和sub 的特殊使用
2019-04-04 19:53 1092gsub和sub使用 常用的使 ... -
rails离线环境搭建相关命令
2018-12-17 09:35 4911:下载yum包: 环境搭建需要安装很多包,可以使用 yumd ... -
rails离线环境搭建相关命令
2018-12-17 09:35 5211:下载yum包: 环境搭建需要安装很多包,可以使用 yumd ... -
rails5 belongs_to 默认不能为空,报错must exist
2017-04-29 16:37 4991: 在config/application.rb设置 con ... -
随笔知识
2014-08-07 21:11 1844show-source: 查看方法在文件中的位置,show-s ... -
rails 中 group 按照一定的规则返回数据
2012-11-03 19:20 981has_many :user_resumes, class_n ... -
项目 经验
2012-10-10 15:53 01: user = User.first; user. ... -
数组使用will_paginate
2012-03-30 11:58 1449有的时候,在开发的过程中需要对模型数组进行分页,此时我们可以如 ... -
我的rails 编程规范
2012-01-16 15:19 9311: 属性中时间要已at结尾,例如created_at, ... -
html_safe
2012-01-12 13:56 1451html_safe: 可以保证(> < &am ... -
同时分页查找没有关联关系的多个表
2011-12-30 14:41 1305supplyinfos和seekinginfos两个表 需求: ... -
send_file ie下文件名乱码问题解决
2011-10-28 17:50 2496使用rails的send_file 实现下载功能时,type指 ... -
counter_cache的使用
2011-10-08 11:55 2755有点惭愧,做rails也2年了,竟然不会用co ... -
has_many 关联关系表单 提交
2011-04-18 17:16 1176class Author has_many :books ... -
rails 根据异常显示特定的错误页面
2011-03-27 20:50 1191rescue_from 异常, :with => :a ... -
rails 笔记
2011-03-27 20:49 1767启动项目: ruby script/se ... -
rails 发送电子邮件(ActionMailer)
2011-03-27 20:49 36481: 复制以下配置邮件 ... -
rails 读写分离
2011-03-27 20:48 2058开发环境下实现rails的 ...
相关推荐
当需要一次性获取多级关联的数据时,可以使用嵌套关系。例如,获取用户及其所有帖子的所有评论,可以使用`with('posts.comments')`进行预加载,减少多次数据库查询,提高性能。 6. **聚合关系 (Aggregating ...
例如,如果你发现现有的关系类型无法满足特定的需求,你可以创建一个新的函数,返回一个`BelongsTo`, `HasMany`, `MorphTo`等预定义的查询构建器实例,从而构建出新的关系类型。 在“Relaqs”项目中,可能包含了...
在Laravel中,你可以通过定义一个方法并返回`BelongsTo`或`HasOne`实例来建立这种关系。例如,一个`User`模型可能有一个`Profile`模型,可以定义`profile()`方法来获取或设置关联。 4. 一对多关系(One-to-Many):...
在Ecto中,关联关系(如 belongs_to, has_one, has_many 等)通常需要额外的查询来加载。`ecto_morph`通过以下方式优化了这一过程: 1. **延迟加载优化**:在默认情况下,Ecto会进行单独的查询来获取关联数据。`...
在“laravel-categories”中,可能会有一个`Category`模型,用于表示类别实体,并通过定义` belongsTo`和`hasMany`或`morphMany`等关系来处理类别间的层级关系。 2. **数据库迁移**: 使用Laravel的迁移功能可以...
接着,我们需要继承`Morphs`或`BelongsTo`关系来关联父节点。例如: ```php class Category extends Model { protected $fillable = ['name', 'lft', 'rgt', 'parent_id']; public function parent() { return...
8. **关联关系**:如果Category模块需要处理多级分类,可以利用Eloquent的父子关系(hasManyThrough、belongsTo或hasMany)来定义模型之间的关联。 9. **Artisan命令**:Laravel的Artisan命令行工具可以用来生成...
12. **嵌套评论**:可能使用递归或者关联模型实现评论的层级结构,如 Comment 模型可以有 belongs_to :post 和 has_many :comments 关联。 通过深入学习这些知识点,开发者可以了解到如何使用 Ruby 和相关框架构建...