1

現在、mongoid 2.0 から mongoid 3.0.5 に移行中です。私がオブジェクトに持っている関係の 1 つはhas_many_relatedです。これを mongoid 3.0.5 に移行するにはどうすればよいですか? これに関するドキュメントは、Google 検索でも、mongoid.org と two.mongoid.org の Web サイトでも見つかりませんでした。私が見るべき場所はありますか?

コードは次のとおりです。

  has_many_related :food_review do
    def find_or_initialize_by_user_id(user_id)
      criteria.where(:user_id => user_id).first || build(:user_id => user_id)
    end
  end

ありがとう!

4

2 に答える 2

4

has_many_related の代わりに has_many を使用してください。

例えば ​​:

class User
  include Mongoid::Document
  field :name, type: String
  field ...

  has_many :food_reviews

  def find_or_initialize_by_user_id(user_id)
    criteria.where(:user_id => user_id).first || build(:user_id => user_id)
  end
end

class FoodReview
  include Mongoid::Document
  field ...

  belongs_to :user
end

has_many :food_reviews複数形と単数形に注意してくださいclass FoodReview。単数のレビューを参照したい場合は、そのままuse has_one :food_review(参照1-1を参照)

于 2012-09-12T19:51:15.697 に答える
2

mongoid 2.0 のコードを見ると、has_many_related は has_many の単なるエイリアスです。

➜  mongoid  git grep has_many_related
lib/ mongoid/relations/macros.rb:        alias :has_many_related :has_many

:has_many に変更して、コードを同じにしてください。Mongoid Documentation hereの :has_many に指定されたブロックの例があります

于 2012-09-12T16:46:06.483 に答える