我想在现有帖子和作者之间添加关系。
我试图修改created_by
属性,但无法从对象访问它。
def set_author
if (@post.created_by.empty? && @post.author_code.present?)
if @post.author_code == params[:author_code]
@post.created_by = current_user
else
raise(ExceptionHandler::InvalidAuthorCode, Message.invalid_author_code)
end
else
raise(ExceptionHandler::DisallowedAction, Message.action_not_allowed)
end
end
它不起作用,因为即使存在数据库,也没有方法@post.created_by
。
从schema.rb发布模型
create_table "posts", force: :cascade do |t|
t.string "title"
t.text "content"
t.boolean "accepted", default: false
t.string "created_by"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "author_code"
end
编辑: post.rb的一部分
belongs_to :user, optional: true, foreign_key: :created_by
user.rb的一部分
has_many :confessions, foreign_key: :created_by
答案 0 :(得分:1)
假设仅@post
中没有created_by OR user
的失败,那么您可以使用以下命令:
@post.try(:created_by).blank? && @post.author_code.present?
答案 1 :(得分:0)
我试图以错误的方式更新@post属性。更改
@post.created_by = current_user
到
@post.update_attribute(:created_by, current_user)
,它正在工作。 这不是一个Devise用户模型,只是自己编写的。