这是我的关系:
tidyr
关联:
=> user.rb
create_table :decks do |t|
t.references :user, index: true
t.string :name
t.timestamps
end
create_table :users do |t|
t.references :choosen_deck, index: true, foreign_key: { to_table: :decks }
t.integer :hp
t.integer :armor
t.timestamps
end
=> deck.rb
has_many :decks, dependent: :destroy
has_one :choosen_deck, class_name: 'Deck', dependent: :destroy
这是我的迁移,我希望有这种关系:
=> user.choosen_deck
=> user.decks
=> deck.user
但它不起作用,因为我无法保存甲板模型。 你有什么想法吗?
更新:
=>这是跟踪
belongs_to :user, foreign_key: 'user_id'
belongs_to :choosen_deck, class_name: 'User'
度过愉快的一天
答案 0 :(得分:1)
不应该只是:
class Deck < ActiveRecord::Base
belongs_to :user
end
我不确定你的意图:
belongs_to :choosen_deck, class_name: 'User'
在创建记录方面,我认为您应该能够做到:
user = User.create!(hp: 20, armor: 20)
user.create_choosen_deck!(name: "Deck t")
user.decks.create!(name: "Deck 2")
create_choosen_deck
和decks.create
是关联声明提供的方法(有关详细信息,请参阅Docs)。如果您使用这些方法,则会自动设置user_id
值。
(顺便说一句,它是chosen
,而不是choosen
。)