`

有嵌套关系的model has_one

阅读更多
class Book < ActiveRecord::Base
 has_one :distributor
end

class Distributor < ActiveRecord::Base
 belongs_to :book
 has_many :agents
end

class Agent < ActiveRecord::Base
 belongs_to :distributor
 has_many :shops
end

class Shop < ActiveRecord::Base
 belongs_to :agent
end

#Schema - http://pastie.org/426261

def test_should_load_all_shops
  shop_1= Shop.create!
  shop_2= Shop.create!
  book= Book.create!(:distributor => Distributor.create!(:agents=> [Agent.create!(:shops => [shop_1, shop_2])]))


  loaded_version = Book.find(book.id, :include => [:distributor => {:agents => :shops}], :order => 'shops.id')

  assert(loaded_version.distributor.agents.first.shops.size == 2)
  #THIS ASSERTION FAILS WITH SHOPS.SIZE BEING 1, INSTEAD OF 2
end
分享到:
评论

相关推荐

    Yii框架关联查询with用法分析

    `HAS_ONE`(有一个)是`HAS_MANY`的特殊情况,表示一个模型最多有一个相关模型。例如,`User`模型可能只有一个`Profile`: ```php 'profile' =&gt; array(self::HAS_ONE, 'Profile', 'user_id') ``` 最后,`MANY_MANY...

    通过查询数据库,在.net中实现大类商品下嵌套小类商品

    .HasOne(c =&gt; c.Parent) .WithMany(c =&gt; c.Children) .HasForeignKey(c =&gt; c.ParentId); } } public List&lt;Category&gt; GetSubCategories(int parentId) { using var context = new CategoryContext(); return ...

    Laravel开发-embed-relation

    在Laravel中,你可以通过定义一个方法并返回`BelongsTo`或`HasOne`实例来建立这种关系。例如,一个`User`模型可能有一个`Profile`模型,可以定义`profile()`方法来获取或设置关联。 4. 一对多关系(One-to-Many):...

    Ruby-JSONAPIResources提供了一个框架来开发一个符合JSONAPI规范的服务器

    has_one :profile end ``` 然后,你可以使用这个资源来处理请求,例如创建一个新的用户: ```ruby class UsersController include JSONAPI::ActsAsResourceController def create # ... 业务逻辑 ... end ...

    Laravel开发-mongodb-relations

    1. **一对一(One to One)**:在模型中定义一个`hasOne`或`belongsTo`方法,通过`_id`字段进行关联。 2. **一对多(One to Many)**:使用`hasMany`和` belongsTo`方法。在子模型上定义`belongsTo`,在父模型上...

    Laravel开发-laravel-embeds

    在Laravel中,我们可以通过定义`Illuminate\Database\Eloquent\Relations\BelongsTo`或`Illuminate\Database\Eloquent\Relations\HasOne`关系,并将`morphTo`或`morphOne`作为其类型来实现嵌入。这样,我们可以在...

    active-model-serializers-node:Node.jsiojs 的活动模型序列化程序

    has_one :profile } ``` 在这个例子中,`UserSerializer`会包含`name`、`email`和`created_at`属性,同时还会包含一个名为`profile`的一对一关联模型。 AMS也支持条件性序列化,例如基于用户权限的动态属性显示。...

    Laravel开发-eloquent-only

    3. **关系(Relationships)**: Eloquent支持多种类型的关系,包括一对一(hasOne)、一对多(hasMany)、多对多(belongsToMany)、多态关系(morphTo、morphOne、morphMany)等。通过定义这些方法,可以在模型之间...

    cakephp手册(doc打印版).rar

    1. 数据表关联:介绍如何定义一对一、一对多、多对多关联,以及如何使用BelongsTo、HasOne、hasMany和hasAndBelongsToMany等关联类型。 2. ORM(对象关系映射):探讨ActiveRecord模式,理解查询构造器(Query ...

    Yii2中关联查询简单用法示例

    这段代码定义了一个`hasOne`关联,表示`Post`模型与`Category`模型之间的一对一关系,`'id'`是`Category`表的主键,`'cate_id'`是`Post`表的外键。 接下来,我们可以在`Post`模型类中添加一个静态方法`...

    英语王长喜长难句解析

    **解析**:这句话通过嵌套从句的方式构建了一个复杂的句子结构,强调了通过考察欧洲国家青年队来观察某种现象的强化效果。这种结构在学术或正式写作中很常见,旨在提供更具体、详细的背景信息。 --- ##### 2. 多重...

    thinkphp5.0反序列化链小记.pdf

    O:27:"think\model\relation\HasOne":3:{s:11:"\0*\0bindAttr";a:1:{s:9:"_wh1t3p1g";s:4:"test";}s:15:"\0*\0selfRelation";b:0;s:8:"\0*\0query";O:14:"think\db\Query":1:{s:8:"\0*\0model";O:20:"think\console\...

Global site tag (gtag.js) - Google Analytics