Rails 这个错误提示是什么意思?如何解决?

singtat · 2014年11月04日 · 最后由 shangrenzhidao 回复于 2014年11月05日 · 2047 次阅读

user_mail: current_user.email

冒号打错位置了

@foxzool 改了冒号,还是有错误提示耶~ 肿么办

Idea.find_by_user_email current_user.email 或者 Idea.where(:user_email => current_user.email).first,推荐用第二种写法,试试看

要不要去看看 Ideas 表里有没有这个 user_email 字段啊

同楼上,到 schema 看 ideas 有没有 user_email……还有 qq 邮箱暴露了 😄

@cifery @ziqa 好像是没有这个字段。 我是先用 scaffold 做了 idea 的骨架,只有 name 和 description 作为 idea 的内容。 然后安装了 devise,生成了 user 模型,user 默认是用 email 注册的。 在 IdeasController 里,默认是 def index @ideas = Idea.all end 这样的话,所有 user 都可以操作其他用户的 ideas,我要限制自己只能查看和操作自己的。 于是有人说,把上面改为 def index @ideas = Idea.find_by(user_email: current_user.email) end 就可以达到目的。 到底我漏了哪个环节啊?

  1. bundle exec rails g migration add_email_to_users email:string
  2. bundle exec rake db:migrate

没有字段可以这样解决 应该对 devise 也能用

原因就是 idea 表里面没有 user_email 字段咯。

你要有个关联,把 user 和 idea 关联起来。在 idea 表里面加上 user_id 然后 user = User.find_by_user_email(current_user.email) ideas = Idea.where(user_id: user.id)

当然你 save idea 的时候需要 idea.user_id = current_user.id 或者你在 user model 里面加上 has_many :ideas user.ideas.create 创建

ruby china 里面的大大好耐心呀,以前在其它一些社区里面看有人问非常基础的问题,竟然有人回答 你他妈的不会去 Google 呀。

@cifery @towonzhou 感谢你们的热心解答啊。 @greatghoul 说得没错,如果没有大神乐意不厌其烦地解答菜鸟的问题,最终的结果只是这种语言的没落。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号