У меня есть две модели - «символы» и «пользователи». Среди других атрибутов символы имеют атрибуты «created_by_id» и «updated_by_id», которые являются идентификаторами пользователей, которые создали/обновили определенную запись символа.Несколько вложенных атрибутов одного типа
Предположим, что я хочу отобразить таблицу символов с их атрибутом «символ» и вложенными атрибутами «созданный» и «обновленный» (user.username) для каждой записи символа. Результирующая таблица должна выглядеть примерно так:
symbol created_by updated_by
------------------------------------
symbol1 username1 username2
symbol2 username1 username2
Как я могу это достичь? Я думаю, мне нужно accepts_nested_attributes_for :user
и, возможно, has_one :user
(?) В моей модели Symbol. Нужно ли мне также belongs_to :user
в моей модели пользователя?
После того, как модели настроены правильно, как я могу получить доступ к имени пользователя, связанного с «created_by_id» и «updated_by_id», на мой взгляд?
У меня есть форма редактирования, где я использовал вложенную форму, как это (который прекрасно работает):
<%= form_for @symbol do |f| %>
Symbol:
<%= f.text_field :symbol %>
<%= f.fields_for :kanji do |kf| %>
Meaning:
<%= kf.text_field :meaning %>
Onyomi:
<%= kf.text_field :onyomi %>
Kunyomi:
<%= kf.text_field :kunyomi %>
<% end %>
<%= f.submit "Save" %>
<% end %>
, но я не мог понять, как сделать что-то подобное в этом случае, когда у меня есть два вложенных атрибутов связанных с одним и тем же символом.
Я новичок в рельсах, поэтому, возможно, я понял, как это сделать неправильно. Если есть что-то лучше, чем я только что объяснил, как я хочу это сделать, пожалуйста, поправьте меня.
Редактировать: Вот модели. Первый из них на самом деле называется JSymbol, но проблема остается прежней.
class JSymbol < ActiveRecord::Base
belongs_to :j_symbol_type
has_one :kanji, :dependent => :destroy
has_one :radical, :dependent => :destroy
has_one :vocabulary, :dependent => :destroy
attr_accessible :created_by_id, :updated_by_id, :symbol, :j_symbol_type_id, :level
attr_accessible :kanji_attributes, :radical_attributes, :vocabulary_attributes
accepts_nested_attributes_for :kanji, :radical, :vocabulary
end
И модель пользователей.
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :lockable, :timeoutable
attr_accessible :username, :email, :password, :password_confirmation, :remember_me
validates :username, :presence => true, :uniqueness => true
end
Это, конечно, без пользовательского jsymbol отношения, так как я не знаю, какого рода отношения, чтобы добавить там .. Это должно быть что-то вроде has_one :user
в модели JSymbol и belongs_to :j_symbol
в модели пользователя, кроме этого нужно сделайте дважды как-то .. Существует также вопрос вызова метода .build в методе действий для каждого символа.
, вероятно, не лучшим образом, я решил это с sendind значение для помощника, находя пользователя и вернуть имя этого пользователя. – rmagnum2002
да, я подумал об этом, но для страницы из 10 предметов я бы выполнил 20-разрядные запросы только для получения всех имен пользователей .. так что это последнее мое средство. спасибо за ответ, хотя. – pootzko
опубликуйте модель 'user' и' symbol', пожалуйста, часть с реляциями между ними – rmagnum2002