У меня есть форма, прикрепленная к профилям, где можно отправлять короткие комментарии. Я хочу зафиксировать имя автора, чтобы отображать его во всплывающей подсказке при наведении на текст комментария.
В моем create
методе в контроллере у меня есть:
def create
@comment = Comment.new(params[:comment])
@comment.save!
redirect_to profile_path(@comment.profile)
end
Внутри моей миграции:
t.timestamps
t.integer :profile_id
t.string :author_id
t.string :body
Модель профиля:
belongs_to :user
accepts_nested_attributes_for :user
has_many :comments
Комментарий модели:
belongs_to :profile
ProfilesController:
def show
@user = User.find(params[:id])
@profile = user.profile
@superlative = @profile.superlatives.new
end
И моя форма:
<%= form_for @comment do |f| %>
<%= f.hidden_field :profile_id, :value => @profile.id %>
<%= f.hidden_field :author_id, :value => "#{current_user.profile.first_name} #{current_user.profile.last_name}" %>
<%= f.text_field :body %>
<%= f.submit 'Add new' %>
<% end %>
Я думал связать: author_id с current_user.profile.id и использовать эту ассоциацию для отображения: first_name и: last_name, которые являются атрибутами профиля. Или есть более простой и лучший способ?
ОБНОВЛЕНИЕ: Я получил его, чтобы отобразить имя, хотя мне все еще интересно, есть ли лучший способ.