所以这是一个想法
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
- 如何限制用户可以提出的问题数量?
- 有没有更好的方法?
所以这是一个想法
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
回答第一个问题:
在 QuestionsController create 方法中,您应该只输入一些类似以下内容的代码:
if user.questions.length > 3
#tell them they can't ask more questions
else
#create the question
end
到第二个:
另外,我认为让 Vote 成为它自己的资源是没有意义的。我只是将“投票”或“投票”定义为答案上的一个字段。当一个答案被投票时,你只需增加 Answer.votes。不过取决于您的用例
此外,如果您想更深入地自定义验证,您可以委托验证,假设user_id
是user
嵌套在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