З цього випливає це попереднє запитання, на яке було дано відповідь. Я фактично виявив, що можу видалити з'єднання з цього запиту, тому тепер робочий запит є
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
Це, здається, працює. Однак, коли я намагаюся перемістити ці DeckCards в іншу асоціацію, я отримую помилку ActiveRecord :: ReadOnlyRecord.
Ось код
for player in @game.players
player.tableau = Tableau.new
start_card = start_cards.pop
start_card.draw_pile = false
player.tableau.deck_cards << start_card # the error occurs on this line
end
і відповідні моделі (tableau - це картки гравців на столі)
class Player < ActiveRecord::Base
belongs_to :game
belongs_to :user
has_one :hand
has_one :tableau
end
class Tableau < ActiveRecord::Base
belongs_to :player
has_many :deck_cards
end
class DeckCard < ActiveRecord::Base
belongs_to :card
belongs_to :deck
end
Я виконую подібну дію одразу після цього коду, додаючи DeckCards
руку гравців, і цей код працює нормально. Мені було цікаво, чи потрібна belongs_to :tableau
мені модель DeckCard, але вона чудово працює для додавання в руку гравця. У мене є таблиці tableau_id
та hand_id
стовпці в таблиці DeckCard.
Я подивився ReadOnlyRecord в рейки api, і це не говорить набагато більше, ніж опис.