0

私はacts-as-taggableを使用しています。2 つのモデル: ユーザーと投稿。

Posts belongs_to :user
User has_many :posts

投稿はタグ付け可能として機能します。ユーザーがタガーとして機能

これらはすべて簡単で、機能しています。ただし、このプラグインの動作とは異なるユースケースがあります。

投稿に複数のユーザーがタグ付けできるようにしたい。ユーザーからの投稿にタグが作成された場合、次の操作を行うと表示されません。

p = Post.first
p.tag_list # this returns []

生成されている SQL を見ると、「tagger_id」が NULL のレコードが選択されています。もちろん、この場合の tagger_id は user_id であり、ほとんど NULL ではありません。

ただし、元に戻すと、必要なものを取得できます。

p = Post.find(1) # get a post to work with
p.tags_from(p.user) # returns an array of the tags: ['cats','dogs','wildebeasts']

これは機能します。

問題は、別のユーザーが一緒に来て、投稿にタグを追加できるようにすることです。たぶん、このユーザーはそれが役立つと思うでしょう。そうすることが理にかなっていると仮定しましょう。司会者になることができます...何でも。

上記の場合、複数のユーザーがタグを追加したと仮定して、特定の投稿のすべてのタグのリストを取得するにはどうすればよいでしょうか?

ありがたいことに、

ニュージャージー州

4

2 に答える 2

4

指定されたプラグインについては何も知りません。Rails についてはまだ学習中です。しかし、私は思わない

p = Post.tag_list

とにかく、あなたが望むものでしょう。特定の投稿のタグリストではなく、Post クラスのタグリストを要求しています。たとえば、ユーザーに「メール」列と「名前」列がある場合、次のこともできません。

u = User.names
u = User.emails

本当に意味がありません。しかし、次のようなことができます:

User.column_names
#=> ["id", "email", "hashed_password", "created_at", "updated_at"]

それはクラスメソッドだからです。さて、tag_list はクラス メソッドかもしれませんが、null の tag_givers を探す方法が原因で、孤立したタグや何かを見つけるために使用されているようです。

しかし、私はまだ Rails に慣れていないため、プラグインがどのように機能するのかもわかりません。

p = Post.find(1)
p.tag_list # p.column_name_of_the_column_that_holds_the_tags should work
# or, maybe pass in ALL users as an array
p.tags_from(User.all)

それらが何をするかを知ってください。

于 2010-12-19T08:16:40.447 に答える
0

多分私は何かが欠けていますが:

p = Post.tag_list # this returns []

#should be 
#...
@post.find params[:id]
#...    
@post.tag_list

現在、post クラスのインスタンスではなく、tag_list を呼び出しています。

于 2010-12-19T08:23:02.270 に答える