2012-11-22 55 views
0

我有一个rails应用程序,我使用连接表来获取用户歌词,反之亦然。由于某种奇怪的原因,我一直无法获得用户歌词的数量。当我从用户模型中删除直通选项时,它可以正常工作,但我需要它通过shareship工作,以便用户可以共享歌词。任何人都有类似的问题或解决方案?Rails从连接表访问信息

User.rb

has_many :shareships 
has_many :lyrics, through: :shareships, dependent: :destroy 

Lyric.rb

has_many :shareships 
has_many :users, through: :shareships, dependent: :destroy 

Shareship.rb

attr_accessible :lyric_id, :user_id 

belongs_to :lyric 
belongs_to :user 

这是代码我ü唱歌在我看来,通过使用

<%= total_user_lyrics = @user.lyrics.count %> 

如果user没有lyrics那么它将返回0显示歌词算

#Returns 0 
<%= @user.lyrics.count %> 
+1

协会已经很好了。夫妇的事情:用户是否只有0歌词?你的迁移是什么样的?如果它的多态性theres更多一点被指定。另外,你真的想要歌词摧毁用户(从属)? – AJcodez

回答

0

可以获取数据。所以,首先检查

在控制台

@user.lyrics它会返回检查,它是否会返回nil那么当你尝试@user.lyrics.count。您将获得0,因为@user.lyrics没有记录。

反之亦然

<%= total_lyric_users = @lyric.users.count %> 
+0

用户有歌词,但我只能通过删除has_many来访问它们:通过我需要的关联来让用户分享歌词。当我在控制台上撷取一首歌词,然后搜寻拥有歌词的用户时,它可以正常播放,但当我尝试时,反之亦然。 – coletrain

+0

你反之亦然? –

+0

与@ lyric.user相反,它会返回用户。我刚刚发现,当我与用户分享一首歌词时,计数会增加。 – coletrain