has_many :通过但只是有时?
has_many :through but only sometimes?
我有一个包含很多 Users
的应用程序,其中每个 User
有很多 Questions
为什么我需要这样做
现在,我们希望能够将一些 Messages
舀到 Questions
中。这很复杂,因为并非所有 Messages
都属于 Question
。这是一个例子:
- = Not (really) a question
x = Belongs to question x
y = Belongs to question y
[-] Hey
[-] Hey, what's up?
[x] Not much. Hey, what's a good movie to see tonight?
[x] How about Star Wars?
[x] Great idea! Thanks.
[-] You bet.
[-] Star wars is awesome.
[-] Yeah it is.
[-] Hey I have another question
[-] Shoot
[y] Where should I go on vacation this summer?
[y] Go to France, it's beautiful.
[y] Yeah, I'll go to France.
[-] Any other questions?
[-] No, but thanks for your help.
需要发生什么
作为最终结果,我希望看到消息流并标记属于问题的消息,如上所述。所以做一些像
这样的事情会很好
@messages.each do |message|
if not message.question.blank?
...
并且我想标出问题的类别(Question
的属性)
@message.question.update(category: 3)
我还想查看单个问题并对其应用类别,这样我就可以提取如下内容:
p = @question.category
ul
@question.messages.each do |message|
li = message.content
我担心的是消息并不总是与问题相关。那么我应该如何构建我的数据?
更新
还有一点忘了说,数据最终应该输出为JSON。
基本上你想做的是在 Message
中创建一些方法来处理整个 if question.present?
检查,例如
class Message < ActiveRecord::Base
belongs_to :question
def category
question.try(:category) || "-"
end
# ...
end
那么你可以在你看来做这样的事情:
@messages.each do |m|
= "[#{m.category}] #{m.text}"
我有一个包含很多 Users
的应用程序,其中每个 User
有很多 Questions
为什么我需要这样做
现在,我们希望能够将一些 Messages
舀到 Questions
中。这很复杂,因为并非所有 Messages
都属于 Question
。这是一个例子:
- = Not (really) a question
x = Belongs to question x
y = Belongs to question y
[-] Hey
[-] Hey, what's up?
[x] Not much. Hey, what's a good movie to see tonight?
[x] How about Star Wars?
[x] Great idea! Thanks.
[-] You bet.
[-] Star wars is awesome.
[-] Yeah it is.
[-] Hey I have another question
[-] Shoot
[y] Where should I go on vacation this summer?
[y] Go to France, it's beautiful.
[y] Yeah, I'll go to France.
[-] Any other questions?
[-] No, but thanks for your help.
需要发生什么
作为最终结果,我希望看到消息流并标记属于问题的消息,如上所述。所以做一些像
这样的事情会很好@messages.each do |message|
if not message.question.blank?
...
并且我想标出问题的类别(Question
的属性)
@message.question.update(category: 3)
我还想查看单个问题并对其应用类别,这样我就可以提取如下内容:
p = @question.category
ul
@question.messages.each do |message|
li = message.content
我担心的是消息并不总是与问题相关。那么我应该如何构建我的数据?
更新
还有一点忘了说,数据最终应该输出为JSON。
基本上你想做的是在 Message
中创建一些方法来处理整个 if question.present?
检查,例如
class Message < ActiveRecord::Base
belongs_to :question
def category
question.try(:category) || "-"
end
# ...
end
那么你可以在你看来做这样的事情:
@messages.each do |m|
= "[#{m.category}] #{m.text}"