Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails:为从超类继承的模型创建脚手架?_Ruby On Rails_Ruby_Ruby On Rails 3_Model_Scaffolding - Fatal编程技术网

Ruby on rails rails:为从超类继承的模型创建脚手架?

Ruby on rails rails:为从超类继承的模型创建脚手架?,ruby-on-rails,ruby,ruby-on-rails-3,model,scaffolding,Ruby On Rails,Ruby,Ruby On Rails 3,Model,Scaffolding,我是Rails的新手,我的脚还是湿的,所以如果这是琐碎的或者是“错误的方式”,请原谅我 我想为一些脚手架模型创建一个超类。例如,我想为男性和女性创建一个脚手架,但我希望他们都从人超类继承男性和女性将从人类继承身高和体重等字段 我在哪里/如何定义这个People超类?如何通过scaffolding定义子类Men和Women?这是我考虑过的应用程序。我还没有做过,如果您是rails新手,我不推荐您使用它。我要么完全创建单独的模型,要么创建一个模型,并具有属性gender,该属性应为0或1,然后创建一

我是Rails的新手,我的脚还是湿的,所以如果这是琐碎的或者是“错误的方式”,请原谅我

我想为一些脚手架模型创建一个超类。例如,我想为
男性
女性
创建一个脚手架,但我希望他们都从
超类继承
男性
女性
将从
类继承
身高
体重
等字段


我在哪里/如何定义这个
People
超类?如何通过scaffolding定义子类
Men
Women

这是我考虑过的应用程序。我还没有做过,如果您是rails新手,我不推荐您使用它。我要么完全创建单独的模型,要么创建一个模型,并具有属性
gender
,该属性应为0或1,然后创建一个方法,返回对应gender的字符串

编辑

所以我打开了rails控制台,从我看到的情况来看,完全有可能,您只需声明类,如果您想使用不同的表,
set\u table\u name

class This < That
  set_table_name :this
end

class There < This
   set_table_name :there
end
然后,您将手动创建超级类
User

class User < ActiveRecord::Base

end
# men.rb
class Men < User
end

# women.rb
class Women < User
end
假设您希望使用一个表来创建子类,您可以更正该表的迁移,然后将
attr\u accessible
添加到相应的子类中

attr\u accessible
是rails的一项安全功能。它确定可以在体量指定中设置哪些属性。任何与安全、网站排名等相关的内容都不应访问

例如:

attr_accessible :favorite_food, :interests, :password, :email # THIS IS GOOD

attr_accessible :admin, :has_access_to_missile_launch_codes # THIS IS BAD
因为那样的话,有人会通过路过来破坏你的安全系统

params=>{:man=>{:admin=>true}

主要的一点是,使用这些
attr\u accessible
将确定哪种类型的用户可以设置什么。显然,您可以通过在超级类中添加共享特性来消除这一问题。希望这有帮助


您还应该了解
super
关键字和
self
关键字。如果您运行的是继承的设置,您最终会希望使用这些设置。

好吧,您需要调整现有的脚手架模板,我认为没有办法指定控制器基类。也就是说,我认为在Rails 3中,您可以将模板复制到
$ROOT/lib/templates/Rails/…
中,其中
..
取决于您想要更改的内容

也就是说,在脚手架上这样做的真正目的是什么?一般来说,模型(a)很少是子类,(b)甚至很少是同一个子类


只需手动编辑即可。

观看关于单表继承的屏幕广播



通常我会做以下事情:

rails g scaffold People type:string name:string birth:date height:integer

class People < ActiveRecord::Base
end
结果男子:

class Men < People
end
结果

class Women < People
end
阶级女性
不会为子类生成迁移。 我不确定,但这种方法只适用于STI


希望它能帮助你

是的,这个小例子你可能是对的。但如果我想追踪每种性别的特定信息呢?比如说,如果我想为男人而不是女人建立一个“胡子风格”的领域?显然,这是一个人为的例子,但对于更复杂的模型来说,很难保持内容的干爽和相关性。好的,我明白你的意思,我应该知道你在使用占位符类。我从来没有在网上透露过我的申请信息。我会做一些测试,然后再打给你。我还在学习如何把事情结合起来;我很高兴它可以工作,但我不确定在哪里声明这些类。我是否像往常一样从命令行创建两个框架(“男”和“女”),然后手动编辑生成的代码以从“人”类继承?我在哪里声明“People”类(您示例中的“That”类)?太好了,这就是我要找的。让我测试一下,然后再给你回复。谢谢酷,记住,这可能被认为是最前沿的,可能与一些流行的宝石不兼容。别忘了接受正确的答案!是的,我不完全确定是否需要脚手架;这基本上是一种锻炼。我正在尝试将OOP概念应用于Rails:从概念上测试它,学习如何建模。我知道Ruby可以做到这一点;然而,在Rails中,可能有更好的方法。不管怎样,我在哪里可以找到那些脚手架模板?
class Men < People
end
rails g scaffold Women --parent=People
class Women < People
end