devise_mapping.registerable?,devise_mapping.recoverable?....come从哪里来?我的意思是,我找不到他们的文件,也找不到关于他们的任何信息。
为什么在if..end结构中总是有一个"-“?例如:
<%- if controller_name != 'sessions' %>
<%= link_to "Sign in", new_session_path(resource_name) %><br />
<% end -%>发布于 2013-12-04 19:54:09
当Rails服务器启动时,在devise gem代码中,lib/devise/Modes.rb调用所有可用模块的add_module。lib/devise.rb打电话给Devise::Mapping.add_module module_name。然后,lib/Designing.Rb使用以下代码构建像registerable?这样的方法:
# Create magic predicates for verifying what module is activated by this map.
# Example:
#
# def confirmable?
# self.modules.include?(:confirmable)
# end
#
def self.add_module(m)
class_eval <<-METHOD, __FILE__, __LINE__ + 1
def #{m}?
self.modules.include?(:#{m})
end
METHOD
end如果您运行Rails控制台,然后查看您的设计资源之一(如:user ),您可以看到通过签出Devise.mappings[:user].methods.sort构建的方法,还可以看到您决定使用Devise.mappings[:user].modules在用户模型中包含的模块。
<% %>代码中的"-“与省略空白有关,尽管它可能不再是必要的,也可能因浏览器而有所不同,因为并不总是有明显的差异(参见:Rails ERB <%- ... -%> vs. <% ... %>和Difference between -%> and %> in rails)。
https://stackoverflow.com/questions/20383498
复制相似问题