У меня есть модель Artist, которая выглядит следующим образом:
# app/models/artist.rb
class Artist < ActiveRecord::Base
# Relationships
has_many :releases
has_many :songs, :through => :releases
has_many :featured_songs, :through => :releases,
:class_name => "Song",
:source => :song,
:conditions => { 'releases.featured', true }
end
Получение featured_songs работает отлично.Проблема в том, что я не могу добавить новый featured_song к исполнителю, потому что по какой-то причине атрибут признака «Featured» установлен в «nil».
Это то, что я пытаюсь:
ruby-1.9.2-p180 :004 > a = Artist.first
ruby-1.9.2-p180 :005 > a.featured_songs.create(:title => "Title", :user => User.first)
Фактический результат:
ruby-1.9.2-p180 :004 > a = Artist.first
ruby-1.9.2-p180 :005 > a.featured_songs.create(:title => "Title", :user => User.first)
User Load (0.9ms) SELECT `users`.* FROM `users` LIMIT 1
SQL (1.0ms) BEGIN
SQL (5.5ms) INSERT INTO `songs` (`created_at`, `title`, `updated_at`, `user_id`) VALUES (?, ?, ?, ?) [["created_at", Thu, 11 Aug 2011 18:30:34 UTC +00:00], ["title", "Title"], ["updated_at", Thu, 11 Aug 2011 18:30:34 UTC +00:00], ["user_id", 1]]
SQL (1.2ms) INSERT INTO `releases` (`album_id`, `artist_id`, `created_at`, `featured`, `song_id`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?) [["album_id", nil], ["artist_id", 1], ["created_at", Thu, 11 Aug 2011 18:30:34 UTC +00:00], ["featured", nil], ["song_id", 6], ["updated_at", Thu, 11 Aug 2011 18:30:34 UTC +00:00]]
(0.1ms) COMMIT
Обратите внимание: ["featured", nil]
Есть идеи, что я делаю неправильно?Как правильно установить атрибуты в моем соединении, не обращаясь к нему напрямую?
спасибо!
РЕДАКТИРОВАТЬ: Чтобы сделать мою проблему более ясной:
Из экземпляра исполнителя я не могу создать новые избранные песни с помощью отношения featured_songs
Похоже, что при сохранении устанавливаются все атрибуты песни, КРОМЕ для (наиболее важного) featured
Атрибут featured
по какой-то причине устанавливается на nil
, и это реальная проблема здесь.