3

編集

Githubの手順では、gemのgemcutterソースを使用するように指示されています。現在、これによりバージョン2.0.5がインストールされます。これには、以下で詳しく説明するバグが含まれています。

@Vlad Zloteanuは、1.0.5にバグが含まれていないことを示しています。また、1.0.5で試してみましたが、このバージョンにはバグが存在しないことを確認しました。2.xでacts_as_taggable_onと所有タグに苦労している人々は、ロールバックして修正を待ちます。


何らかの理由で、タガーが指定されている場合、タグはタグ付け可能なオブジェクトに表示されません。

投稿のテスト

class Post < ActiveRecord::Base
  acts_as_taggable_on :tags
  belongs_to :user
end

>> p = Post.first
=> #<Post id: 1, ...>
>> p.is_taggable?
=> true
>> p.tag_list = "foo, bar"
=> "foo, bar"
>> p.save
=> true
>> p.tags
=> [#<Tag id: 1, name: "foo">, #<Tag id: 2, name: "bar">]

ユーザーのテスト

class User < ActiveRecord::Base
  acts_as_tagger
  has_many :posts
end

>> u = User.first
=> #<User id: 1, ...>
>> u.is_tagger?
=> true
>> u.tag(p, :with => "hello, world", :on => :tags)
=> true
>> u.owned_tags
=> [#<Tag id: 3, name: "hello">, #<Tag id: 4, name: "world">]

投稿を更新する

>> p = Post.first
=> #<Post id: 1 ...>
>> p.tags
=> [#<Tag id: 2, name: "bar">, #<Tag id: 1, name: "foo">]

helloworldタグはどこにありますか?奇跡的に、データベースを直接変更してsettagger_idtagger_typetoNULLにすると、2つの欠落しているタグが表示されます。モデルに何か問題があるのではないかと思いUserますか?何が得られますか?


編集

さらに見知らぬ人:

Post.tagged_with("hello")
#=> #<Post id: 1, ...>

投稿が見つかりました!したがって、データベースからタグを読み取ることができます。Post#tagsなぜそれがまたはで表示されないのPost#tag_listですか?

4

2 に答える 2

3

まったく同じクラスを使用して、プロジェクトを再作成しました。

これは私の結果です:

>> Post.create
=> #<Post id: 1, created_at: "2010-05-18 09:16:36", updated_at: "2010-05-18 09:16:36">
>> p = Post.first
=> #<Post id: 1, created_at: "2010-05-18 09:16:36", updated_at: "2010-05-18 09:16:36">
>> p.is_taggable?
=> true
>> p.tag_list = "foo, bar"
=> "foo, bar"
>> p.save
=> true
>> p.tags
=> [#<Tag id: 1, name: "foo">, #<Tag id: 2, name: "bar">]
>> User.create
=> #<User id: 1, created_at: "2010-05-18 09:17:02", updated_at: "2010-05-18 09:17:02">
>> u = User.first
=> #<User id: 1, created_at: "2010-05-18 09:17:02", updated_at: "2010-05-18 09:17:02">
>> u.is_tagger?
=> true
>> u.tag(p, :with => "hello, world", :on => :tags)
=> true
>> u.owned_tags
=> [#<Tag id: 3, name: "hello">, #<Tag id: 4, name: "world">]
>> p = Post.first
=> #<Post id: 1, created_at: "2010-05-18 09:16:36", updated_at: "2010-05-18 09:16:36">
>> p.tags
=> [#<Tag id: 1, name: "foo">, #<Tag id: 2, name: "bar">, #<Tag id: 3, name: "hello">, #<Tag id: 4, name: "world">]

したがって、あなたのバグを再現することはできません。私はmysqlとsqliteの両方で試しました。

これは私のenvファイルからのものです:

config.gem "mbleigh-acts-as-taggable-on", :source => "http://gems.github.com", :lib => "acts-as-taggable-on"

これは私の宝石のバージョンです:

gem list | grep taggable
mbleigh-acts-as-taggable-on (1.0.5)

gem バージョンを投稿できますか? gem をアップグレードしてみては?どのDBを使用していますか?

うまくいかない場合は、からの出力も投稿できますtail -f log/development.logか?

編集: Rails 2.3.5 を使用しています

于 2010-05-18T09:21:58.367 に答える
0

mbleighは、この問題を解決するコミットをリリースしました。すべてのタグを取得するには、owner_tags_onを使用できます。

p = Post.first
p.owner_tags_on(nil, :tags )

これはコミットです:http://github.com/mbleigh/acts-as-taggable-on/commit/3d707c25d45b5cc680cf3623d15ff59856457ea9

さようなら、アレッサンドロDS

于 2010-06-26T16:35:00.363 に答える