У меня есть 4 модели, с которыми я имею дело. У меня есть учетная запись, местоположение, тег и метка. Я поставил его, как следуетРельсы - Имеет много: через, с несколькими путаницами моделей
class Tag < ActiveRecord::Base
# belongs_to :shelter
has_many :taggings, :dependent => :destroy
has_many :locations, :through => :taggings
has_many :accounts, :through => :taggings
end
class Tagging < ActiveRecord::Base
belongs_to :location
belongs_to :tag
belongs_to :shelter
end
class Account < ActiveRecord::Base
has_many :taggings, :dependent => :destroy
has_many :tags, :through => :taggings, :dependent => :destroy
end
class Location < ActiveRecord::Base
has_many :taggings, :dependent => :destroy
has_many :tags, :through => :taggings, :dependent => :destroy
end
create_table :taggings, :force => true do |t|
t.references :account
t.references :location
t.references :tag
t.timestamps
end
Проблема у меня, когда я создаю форму он находится на странице Расположение. Я хочу, чтобы иметь возможность отмечать местоположение, но связать его с учетной записью, и я борюсь с логикой правильности правильной формы и логики контроллера.
В форме У меня есть/location/1/tags Вложенная форма , Но в контроллере я не могу понять, как правильно добавить тег. Вот мои TagsController
def create
@tag = Tag.find_or_create_by_name(params[:tag][:name])
@location = @current_account.locations.find(params[:location_id])
@location.tags << @tag
end
Он работает, но создает несколько строк. Я хочу иметь возможность создать тег, а затем назначить местоположение, учетную запись, тег для маркировки.
Как же у вас есть belongs_to: укрытие в вашей модели мечения. Должна ли она быть принадлежать_у: учетной записи? – JosephL
Джозеф, вы правы ... это был беспорядок в разрезе и пасте. Исправьте бой, что – bokor