0

所以这是一个想法

class Question < ActiveRecord::Base
  has_many : answers
end

class Answer < ActiveRecord::Base
  belongs_to :question
  has_one :vote
end

class Vote < ActiveRecord::Base
  belongs_to :question
end
  1. 如何限制用户可以提出的问题数量?
  2. 有没有更好的方法?
4

2 回答 2

1

回答第一个问题:

在 QuestionsController create 方法中,您应该只输入一些类似以下内容的代码:

if user.questions.length > 3
  #tell them they can't ask more questions
else
  #create the question
end

到第二个:

另外,我认为让 Vote 成为它自己的资源是没有意义的。我只是将“投票”或“投票”定义为答案上的一个字段。当一个答案被投票时,你只需增加 Answer.votes。不过取决于您的用例

于 2013-11-02T14:25:30.333 回答
0

此外,如果您想更深入地自定义验证,您可以委托验证,假设user_iduser嵌套在question模型中的列

class Question < ActiveRecord::Base
  validates_with LengthValidator, :field => :user_id
....
end

class LengthValidator < ActiveModel::Validator
  def validate(record)
    if options[:fields].any?
     #put the above conditional of @Accipheran
  end
end
于 2013-11-02T15:54:24.343 回答