相关疑难解决方法(0)

FactoryGirl和多态关联

该设计

我有一个通过多态关联属于配置文件的用户模型.我选择这个设计的原因可以在这里找到.总而言之,该应用程序的许多用户具有真正不同的配置文件.

class User < ActiveRecord::Base
  belongs_to :profile, :dependent => :destroy, :polymorphic => true
end
Run Code Online (Sandbox Code Playgroud)
class Artist < ActiveRecord::Base
  has_one :user, :as => :profile
end
Run Code Online (Sandbox Code Playgroud)
class Musician < ActiveRecord::Base
  has_one :user, :as => :profile
end
Run Code Online (Sandbox Code Playgroud)

选择这个设计后,我很难做出好的测试.使用FactoryGirl和RSpec,我不确定如何以最有效的方式声明关联.

第一次尝试

factories.rb

Factory.define :user do |f|
  # ... attributes on the user
  # this creates a dependency on the artist factory
  f.association :profile, :factory => :artist 
end

Factory.define :artist do |a|
  # ... attributes for the artist profile
end
Run Code Online (Sandbox Code Playgroud)

user_spec.rb

it "should …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails factory-bot

66
推荐指数
4
解决办法
3万
查看次数

单表继承以及在Rails中使用它的位置

我陷入了一个奇怪的设计问题,

我正在研究两种类型的模型,

  • 用户个人资料(属于用户)
  • 其他在现场维护为"机器人"的人(不属于任何人)

这两种类型的配置文件的典型OO行为是相同的,但只有重要的属性/属性是常见的(非常重要的属性5-6),其他属性如"兴趣等"(几乎10-15属性)不存在用于bot配置文件

之前参与此工作的编码人员为机器人配置文件/用户配置文件创建了单独的模型/控制器,这在任何地方创建了大量冗余,并且预期难以维护,编写测试等.我想干这个,至少要解决一些/所有问题这些冗余问题.

有人建议使用单表继承作为解决方案

有人建议使用多态关联.

什么是更好的方法.我们什么时候实际使用STI?

我自己的想法是当模型的属性相同时,STI被最佳使用,并且它们的行为不同.

关于我该怎么办的想法?

inheritance ruby-on-rails

53
推荐指数
3
解决办法
3万
查看次数

Ruby on Rails多态关联

这是我正在努力实现的目标:我有一个用户表,每个用户可以是十几种类型中的任何一种:演员,舞者,导演......这是在注册后确定的.每种类型的用户都可以拥有任意数量的配置文件.例如.演员可以拥有任意数量的actor_profiles,舞者可以拥有任意数量的dancer_profiles,......

问题是如何将配置文件与用户链接.一个显而易见的解决方案是为每个配置文件类型创建一个aditional表,这样我就可以在User中使用多态的belongs_to,然后在每个配置文件中使用一个简单的belongs_to,但这似乎不是最佳的.一个可以说是更好的方法是告诉rails用户使用类型为actor,这样user.profiles就可以自然地工作,而不会有任何混乱.rails是否支持这种行为,还是有比前一种方法更好的东西?谢谢.

ruby-on-rails

5
推荐指数
1
解决办法
5486
查看次数

如何在Rails中为不同的用户建模

我有一个带有授权和身份验证逻辑的用户模型。

现在我意识到我有三种不同类型的用户。我想存储有关它们每个的不同信息。

在Rails中处理此问题的最佳方法是什么?

基于当前阅读的想法

我看过STI,但是从我的阅读中发现这是不合适的,因为最终我的数据库中会有很多NULL字段。

理想情况下,我不想为三种用户类型中的每一种重复验证/授权逻辑。

每个用户在应用程序中还将具有不同的功能。

database-design model ruby-on-rails single-table-inheritance

5
推荐指数
1
解决办法
1407
查看次数