大家好我正在开发一个应用程序,我有一个有两列'foo'的书表,'bar'都是整数。
现在我已将默认值设置为零。我希望用户能够单击一个按钮并将它们递增一个,并且下次同一个用户点击它时,字段将减一。这意味着特定用户只能将其递增一次并递减一次。循环继续:这样可以为所有用户计算总计'foo'和'bar' 以下是我的尝试: 在Book的控制器中我有
Def increase_and_decrease_foo
If @book.foo == 0
@book.foo +=1
@book.save
Else
@book.foo -=1
@book.save
End
Def increase_or_decrease_bar
If @book.bar == 0
@book.bar +=1
@book.save
Else
@book.bar -=1
@book.save
End
在视图中 我有<%= button_to'add1',increase_or_decrease_path(@book)%> 每当所有其他用户点击它时,这会添加一个并删除一个...这不是我想要的。请有人指点我这里做什么?我真的迷失在这里。
答案 0 :(得分:2)
根据您的描述,听起来您希望维持每位用户的计数,而不仅仅是本书。
一种可能的解决方案是创建一个连接表:
class Book
has_many :user_votes
class UserVotes
belongs_to :books
belongs_to :users
class User
has_many :user_votes
然后,将在UserVotes表中定义foo和bar列。
这样您就可以访问@user.user_votes -> all votes by that user
和@book.user_votes -> all votes on that book
您可能希望在两个轴上查询它们:
class UserVotes
...
scope :for_user, ->(user_id) { where(user_id: user_id) }
scope :for_book, ->(book_id) { where(book_id: book_id) }