Idea.find_by_user_email current_user.email 或者 Idea.where(:user_email => current_user.email).first,推荐用第二种写法,试试看
@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 就可以达到目的。 到底我漏了哪个环节啊?
没有字段可以这样解决 应该对 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 创建
@cifery @towonzhou 感谢你们的热心解答啊。 @greatghoul 说得没错,如果没有大神乐意不厌其烦地解答菜鸟的问题,最终的结果只是这种语言的没落。