2017-08-29 14 views
0

has_manyの関連付けはどのようにして作成できますか、名前以外の用語でさまざまなインスタンスを参照することはできますか?クラスの属性に似ていますか? (この場合はdog1。)Railsは個別の参照とhas_manyの関連付けを行います

class User < ActiveRecord::Base 
    has_many :dogs 
    dogs: dog1, dog2, dog3, dog4 # I know this won't work but just to give the idea 
end 

だから、あなたが行うことができます:Railsの中でこれを行うにはクリーンな方法はありません

barry = User.create(name: 'Barry') 
barry.dog1.create(name: 'rover', weight: 12) 
barry.dog1.name  #=> rover 
barry.dog1.weight #=> 12 

答えて

0

、回避策はhas_oneを使用することです:

class User 
    has_many :dogs 
    has_one :favorite_dog, class_name: 'Dog', -> { where(favorite: true).order(updated_at: :desc) } 

しかし、事実ですが、Railsのhas_onehas_manyであり、SQL LIMIT 1です。したがって、実際には、関係「some_user.favorite_dog」は、いくつかの「お気に入りの犬」が存在しても、1つのレコードしか返しません。私が例として使用したhas_one :favorite_doglatest_favorited_dogupdated_atでの注文のため)でなければなりません。

has_oneドキュメント:https://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_one

関連する問題