長いタイトルのためにお詫びしますが、これは私を悩ましています。私はRailsが初めてのので、これが私の最初のプロジェクトです。 Rails 3.0.3。Do Rails 3 Active Record動的find_or_create finderメソッドにはいくつかの不整合がありますか?
私のモデルでは、User
は、多くの場合、Entries
と読み込まれている場合があります。これはReadEntries
というモデルで追跡されます。この多対1の関係は、コード内で適切に定義されていると私は考える。
User.rb:
has_many :read_entries
Entry.rb:
has_many :read_entries
ReadEntry.rb:
belongs_to :entry
belongs_to :user
この表は、ある時点で移入されなければなりません。私がこれをやろうとすると:
user.read_entries.find_or_create_by_entry_id(entry.id, :read => false)
私はエラーUnknown key(s): read
を受け取ります。 :read
を設定しようとすると、動作します。
私はこれと同じ行を作成する場合は、それが動作:
ReadEntry.find_or_create_by_entry_id_and_user_id(entry.id, user.id, :read => false)
を論理的には、これらの方法は右、同一である必要がありますか?ありがとう。
リレーションシップでfind_or_createを使用すると、全体的に奇妙な動作が見られます。もし誰かがこれを理解したら、間違いなく興味があるでしょう。今のところupvoted。 –
また、最初のケースではfind_or_initialize_by_entry_idを実行してから、次のように設定することができます。保存する前に返されたオブジェクトを読み込みます。 – drinian