我试图实现以下内容,关系和对象调用,并想知道我是否需要一个单独的表以及这些关联如何工作。
用户可以留下许多笔记(user.notes)A Note可以有一个发件人(note.sender)
用户可以收到许多笔记(user.notes)。 Note可以有许多接收器(notes.recipient)。注释可以由收件人查看。
用户可以选择收件人。 用户可以选择多个收件人。
收件人可以查看每个笔记一次。 一旦笔记的所有收件人都看过笔记,笔记就会被销毁。
我的架构如下所示:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :first
t.string :last
t.string :email
t.string :username
t.string :pw
t.string :devicetoken
t.timestamps
end
end
end
class CreateNotes < ActiveRecord::Migration
def change
create_table :notes do |t|
t.integer :user_id
t.integer :recipient_id
t.text :note_text
t.datetime: viewed_at
t.datetime :expiration
t.timestamps
end
end
end
我的模特看起来像这样:
class User < ActiveRecord::Base
has_many :notes
end
class Note < ActiveRecord::Base
belongs_to :user, foreign_key: 'user_id', class_name: 'User'
belongs_to :user, foreign_key: 'recipient_id', class_name: 'User'
end
但我无法提取笔记的收件人ID,但我无法告诉哪位收件人已查看该笔记。
答案 0 :(得分:1)
我怀疑你遇到了麻烦,因为你为同一个符号定义了两个belongs_to。试着这样做:
class Note < ActiveRecord::Base
belongs_to :user, foreign_key: 'user_id', class_name: 'User'
belongs_to :recipient, foreign_key: 'recipient_id', class_name: 'User'
end
然后尝试拨打note.recipient