我admin在控制器中有命名空间,我想在admin文件夹内生成一个控制器.如何使用Rails命令执行此操作?
可能重复:
Ruby中的含义是什么意思?
我正在从Ruby的Poignant Guide中学习Ruby ,在一些代码示例中,我遇到了似乎用于相同目的的双冒号和点的使用:
File::open( 'idea-' + idea_name + '.txt', 'w' ) do |f|
f << idea
end
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,双冒号用于访问类的open方法File.但是,后来我遇到了使用点来实现相同目的的代码:
require 'wordlist'
# Print each idea out with the words fixed
Dir['idea-*.txt'].each do |file_name|
idea = File.read( file_name )
code_words.each do |real, code|
idea.gsub!( code, real )
end
puts idea
end
Run Code Online (Sandbox Code Playgroud)
这次,使用点来访问类的read方法File.有什么区别:
File.read()
Run Code Online (Sandbox Code Playgroud)
和
File::open()
Run Code Online (Sandbox Code Playgroud) 我是ruby的新手,并且两者兼而有之.我认为Rails是最好的API之一,而且ruby非常独特,似乎ruby可以巧妙地做"假设"来帮助开发人员.但我不太确定会延伸到什么程度.
我的问题是变量中的冒号.
到目前为止我所理解的是: ruby中的变量,就是说这个变量将无法改变,这与其他语言中的常量相似.我对么??
然后我的困惑是,有时我看到变量前面的冒号,像这样
Rails.application.config.session_store :cookie_store,
key: '_blog_session'
<%= link_to "Delete", article, confirm: "Are you sure?",
method: :delete %>
Run Code Online (Sandbox Code Playgroud)
这两个关键:与方法:已结肠front.What确实,这代表什么?而且
Blog::Application.routes.draw.do
root :to => "articles#index"
end
Run Code Online (Sandbox Code Playgroud)
变量之间有双冒号?现在我猜测Blog:是一个变量,而且:应用程序是不变的.我怀疑它是什么,因为它没有意义.请赐教?
谢谢
什么是::MyClass/MyModule范围运营商在Ruby中做的,什么是它的目的是什么?
我有一些我正在修改的继承代码.但是,我看到一些奇怪的东西(对我来说).
我看到一些像这样的代码:
::User.find_by_email(params[:user][:email]).update_attributes(:mag => 1)
Run Code Online (Sandbox Code Playgroud)
我从未见过这样的东西(我是Ruby on Rails的新手).这是做什么的,为什么我的User.find_by_email(params[:user][:email]).update_attributes(:mag => 1)工作没有?错误说明了User常量.
如果有帮助,我正在使用Rails 2.3.5.
我刚刚开始使用Rails,并决定制作一个小应用程序来学习实用的东西.
我有一个用户类,它有一个用户组整数字段.我想使用常量添加到迁移a:默认值.
在我的用户模型中,我使用常量定义了不同的组,以便稍后我可以轻松地检查"admin?" 等等
t.integer :user_group, :default => USER
Run Code Online (Sandbox Code Playgroud)
我在db:migrate上收到以下错误
耙子流产了!期望[...]/app/models/user.rb定义USER
但是在用户模型中我有这个:
ADMIN = 1
USER = 2
Run Code Online (Sandbox Code Playgroud)
我有什么想法我做错了吗?
我对Ruby比较陌生,并且发现以下几对示例同样有效:
File.included_modules
File::included_modules
File.stat('mbox') # Returns a '#<File::Stat..>' object
File::stat('mbox')
File.new("foo.txt", "w")
File::new("foo.txt", "w")
"asdf".size # An instance method
"asdf"::size
2 + 3
2::send(:+, 3) # An extreme example
Run Code Online (Sandbox Code Playgroud)
File::new特别是我经常遇到的事情.
我的问题:它会不地道,我以避免以往任何时候都使用::运算符资格的任何东西,但类,模块和常量,取而代之的名字,始终使用仅点语法的所有方法(类方法,模块方法和实例方法)?
需要明确的是:在任何情况下我都想使用除dot语法以外的任何方法来引用方法(无论是在代码中还是在文档中)?
消息来源咨询:
我正在尝试在heroku上运行迁移,我似乎无法找到为什么我的模型类无法识别的问题.
这是我的迁移:
class AddTestToGoals < ActiveRecord::Migration
def change
add_column :goals, :test, :integer, default: 0, null: false
Goal.reset_column_information
Goal.all.each { |g| g.update_attribute :test, Goal::PASS }
end
end
Run Code Online (Sandbox Code Playgroud)
使用它运行它
heroku run rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
uninitialized constant AddTestToGoals::Goal
Run Code Online (Sandbox Code Playgroud)
谁知道问题是什么?
编辑:错过键入之前,它是无法识别的模型,而不是其中的常量.
半个办公室:
使用此(我在这里找到:http://visibletrap.blogspot.co.il/2011/10/heroku-access-railss-model-in-migration.html)
class AddTestToGoals < ActiveRecord::Migration
class Goal < ActiveRecord::Base; end
def change
add_column :goals, :test, :integer, default: 0, null: false
Goal.reset_column_information
Goal.all.each { |g| g.update_attribute :test, Goal::PASS }
end
end
Run Code Online (Sandbox Code Playgroud)
heroku不抱怨不知道什么目标解决了问题的一半.但是,目标:: PASS无法识别.