Ruby on rails 我怎样才能让用户只在url_字段中添加他们的@name而不是整个Twitter链接?

Ruby on rails 我怎样才能让用户只在url_字段中添加他们的@name而不是整个Twitter链接?,ruby-on-rails,devise,Ruby On Rails,Devise,在我的Rails应用程序中,我有一个用户模型(Desive),其中包含Twitter的url_字段 现在我在我的展示页面中有: <%= link_to @deal.user.company_twitter, @deal.user.company_twitter, :class => "comp_twitter" %> “comp_twitter”%> 它在显示页面中显示整个链接(甚至http://),这是因为我的url_字段让用户添加“http://”,否则它不会验证链接

在我的Rails应用程序中,我有一个用户模型(Desive),其中包含Twitter的url_字段

现在我在我的展示页面中有:

<%= link_to @deal.user.company_twitter, @deal.user.company_twitter, :class => "comp_twitter" %>
“comp_twitter”%>
它在显示页面中显示整个链接(甚至
http://
),这是因为我的url_字段让用户添加“http://”,否则它不会验证链接


我希望用户在创建个人资料时只添加他们的“@name”,而不是整个Twitter链接。我还想在“show”页面中只显示@name而不是Twitter链接。我该怎么做呢?

不要使用
url\u字段
,而是使用常规的
字符串
数据库字段,比如
twitter\u用户名
。注册时,让用户输入用户名,例如
foo

要获取Twitter帐户的真实URL,请在
user.rb
模型中创建一个新方法:

def twitter_url
  "http://twitter.com/#{self.twitter_username}"
end
优点是,此时,在您的模型中,您可以包括一个自定义验证,该验证将在用户提交其
twitter\u用户名后检查此URL是否确实存在

最后,在视图中使用它,而不仅仅是URL:

<%= link_to "@#{@user.twitter_username}", @user.twitter_url %>

这将导致:

<a href="http://twitter.com/foo">@foo</a>