2014-12-13 2 views
0

У меня есть модель пользователя:Добавление user_ids к каждой статье (Завещание)

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_secure_password has_many :articles

И моя схема для User выглядит следующим образом:

create_table "users", force: true do |t| t.string "first_name" t.string "last_name" t.string "email" t.string "password_digest" t.datetime "created_at" t.datetime "updated_at" t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.integer "sign_in_count", default: 0, null: false t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" end

Половина из них из завещанию драгоценный камень. Так что я пытаюсь добиться, чтобы каждая статья имела автора, назначенного ему (first_name + last_name).

Моя статья модель выглядит следующим образом:

belongs_to :topic 
belongs_to :user 

def author 
    "#{self.user_id.first_name} #{self.user_id.last_name}" 
end 

И мои действия в контроллере статьи выглядит следующим образом:

def create 
@article = Article.new(article_params) 
@article.user = current_user 
if @article.save 
    #@article.user = session[:user_id] 
    flash[:notice] = "Article has been uploaded" 
    redirect_to(:action => "show", :id => @article.id) 
else 
    flash[:notice] = "Please fill in all fields." 
    render("new") 
end 
end 

И если я <p><%[email protected]%></p> в моем шоу взгляд, имеет ошибку, которая говорит undefined method - 'first_name'

Как добавить авторов в каждую статью.

+0

Кроме того, я не знаю, если я должен использовать '@article.user_id = current_user' в создании действия. – xoshi827

ответ

0

Использование self.user.first_name вместо self.user_id.first_name.in ваш метод автор
И @ article.user = current_user хорошо, если вы хотите использовать отъ user_id в этом случае, то
использование @ artilce.user_id = current_user.id

+0

Привет. У меня теперь есть проблема, связанная с тем, что мне мешает исходный код, который у меня был. У меня есть код в контроллере 'Access': – xoshi827

+0

' def try_login if params [: email] .present? && params [: password] .present? found_user = User.where (: электронная почта => PARAMS [: электронная почта]). Первый если found_user authorised_user = found_user.authenticate (PARAMS [: пароль]) конец конец если authorised_user сессия [: user_id] = authorised_user .id сеанс [: email] = authorised_user.email flash [: notice] = "Вы вошли в систему" redirect_to (: controller => "articles",: action => 'index') end' – xoshi827

+0

Я думаю это не связано с вашей оригинальной проблемой. Кстати, как вы можете объяснить проблему, с которой вы сейчас сталкиваетесь, потому что форма этого метода и ваш комментарий я не могу ничего сделать ... –

0

хорошо здесь, как вы это делаете:

user.rb

has_many :items 

article.rb

belongs_to :user 

articles_controller.rb

def create 
    @article = Article.new(params[:article].permit(:name, ...)) 
    @article.user_id = current_user.id 
    if @article.save 
     flash[:notice] = 'article created' 
     redirect_to @article 
    else 
     render 'new' 
    end 
end 
Смежные вопросы