Ruby on Rails建议用户输入和mySQL

时间:2012-02-20 10:34:23

标签: mysql ruby-on-rails

我正在尝试开发一个小应用程序,它将用户在mySQL数据库中输入有关视频的信息。问题是我希望用户为每个添加的视频都有一个mySQL表。

所以我的方法有点像这个

class User < ActiveRecord::Base

  has_many :Videos

end

示例:Web应用程序将收集用户56的视频输入23并执行mySQL查询“INSERT INTO video_23_info VALUES ...

每次我向数据库添加新视频时,我都希望将一个表与用户关联。

我不知道我的方法是否正确。我首先想到的只是使用文本文件,并将它们存储在服务器上,放在一个单独的文件夹或每个用户中,而不是使用MySQL。 有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

你的方法似乎错了。数据库通常用于保存具有相同特征的许多记录。所以你应该有两个表,一个用于用户,一个用于视频。为什么每个视频都需要一个表格?

答案 1 :(得分:1)

为每个用户设置不同的表是错误的,也是不好的做法。

您可以创建一个表videos并将所有视频保留在那里:

您的表格可以区分通过用户ID列上传每个视频的人,即:

video_id  | user_id | other info
--------------------------------
    1        100         
    2        200         
    3        100         

因此,您可以查询表格,选择所有视频,单独选择特定用户视频或您想象中可以提供的任何内容。

然后,您可以使用table_100代替用户的视频,只需在查询中使用WHERE user_id = 100,只能获取该用户的视频

答案 2 :(得分:1)

所以这个问题让我有点困惑。我想知道您希望用户输入视频(意味着每个视频可以有来自不同用户的多个输入?)。如果是这种情况,则该方法不是很有效。您仍然可以拥有包含视频信息的视频表(包括您希望的上传者)以及包含用户数据的用户表。然后,您可以使用第三个表来存储来自不同用户的所有输入。

    video_id | user_id | comment
      1           1        loved it
      1           2        user2 input
      2           1        user1 input

 class User < ActiveRecord::Base
    has_many :comments
    has_many :videos
 end

 class Video < ActiveRecord::Base
    has_many :comments
    belongs_to :user
 end

 class Comment < ActiveRecord::Base
    belongs_to :user, :video
 end

通过这种方式,您可以在视频中获得用户的所有视频评论,并在用户页面上显示所有用户评论,并上传用户视频。这适用于上面的示例,为您提供了显示数据的灵活性。