0

У меня есть три модели пользователя, блога и комментария.Облицовочные проблемы с ассоциацией

User.rb

class User < ActiveRecord::Base 
    attr_accessible blah blah  
    has_many :blogs 
    has_many :comments 
end 

Blog.rb

class Blog < ActiveRecord::Base 
    attr_accessible :user_id, :title, :content 
    belongs_to :user 
    has_many :comments 
end 

Comment.rb

class Comment < ActiveRecord::Base 
    attr_accessible :user_id, :blog_id, :comment 
    belongs_to :blog 
    belongs_to :user 
end 

В создании действия Комментарии контроллера

def create 
    @blog = Blog.where('id=?', params[:blog_id]) 
    @comment = @blog.comments.new(params[:comment]) 
    @comment.save 
end 

Здесь, как я могу передать идентификатор current_user в поле user_id таблицы комментариев, я могу создать скрытое поле для этого, но это небезопасно. Пожалуйста помоги! Заранее спасибо.

ответ

1

Будет ли это делать то, что вы хотите?

def create 
    @blog = Blog.where('id=?', params[:blog_id]) 
    @comment = @blog.comments.new(params[:comment]) 
    @comment.user = current_user # force the user to be the logged-in user 
    @comment.save 
end 
+0

Здесь мы явно передаем пользовательскую информацию, есть ли другой способ реализации этого? – RSB

+1

Вы не передаете никакую информацию о пользователе. Вы выходите из сеанса пользователя. user_id никогда не появляется в формах или параметрах. Просто получите его непосредственно из сеанса и поместите его непосредственно в объект комментария из сеанса, как указано выше. –

+0

Да, все в порядке, но это может сработать, но вы можете предложить другой способ сделать это, как прямо из формы? :) – RSB

Смежные вопросы