所以这是一个想法
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
答案 0 :(得分:1)
回答第一个问题:
在QuestionsController创建方法的内部,您应该只添加一些类似于:
的代码if user.questions.length > 3
#tell them they can't ask more questions
else
#create the question
end
到第二个:
另外,我认为让Vote成为自己的资源并不合理。我只想将“投票”或“投票”定义为答案中的字段。当答案被投票时,你只需增加Answer.votes。取决于您的用例
答案 1 :(得分:0)
此外,如果您想要更深入地自定义验证,您可以将验证委托给我们,假设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