Я пытаюсь сделать приложение в Rails 4.Rails с Завещания и OmniAuth - несколько социальных медиа-провайдеров логин
Я пытаюсь настроить разработать с OmniAuth и каждый из Facebook, LinkedIn, Twitter и googleauth. В настоящее время я пытаюсь следовать этому руководству.
http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/
У меня есть модели под названием:
user.rb, profile.rb и identity.rb
Ассоциации являются:
Пользователь
has_one :profile, dependent: :destroy
has_many :identities, dependent: :destroy
Профиль
belongs_to :user
Идентичность
belongs_to :user
Идентичность также подтверждает:
validates_presence_of :uid, :provider
validates_uniqueness_of :uid, :scope => :provider
Я пытаюсь сделать частично в моем пользователь просматривает папку, перечисляет каждый из дополнительных методов аутентификации и показывает ли пользователь использовал их для подключения или нет, предоставляя ссылку для их подключения.
Я сделал:
<table class="table table-bordered">
<tr>
<td><i class="fa fa-facebook"></i></td>
<td>
<% if @profile.user.identity.provider == 'facebook' %>
<span class="glyphicon glyphicon-ok"</span>
<% else %>
<%= link_to icon('Connect Facebook', id: 'facebookauth'), user_omniauth_authorize_path(:facebook) %>
<% end %>
</td>
</tr>
<tr>
<td><i class="fa fa-google"></i></td>
<td>
<% if @user.identity.provider includes 'googleauth' %>
<span class="glyphicon glyphicon-ok"</span>
<% else %>
<%= link_to icon('Connect Google', id: 'googleauth'), user_omniauth_authorize_path(:google_oauth2) %>
<% end %>
</td>
</tr>
<tr>
<td><i class="fa fa-linkedin"></i></td>
<td>
<% if @user.identity.provider includes 'linkedin' %>
<span class="glyphicon glyphicon-ok"</span>
<% else %>
<%= link_to icon('Connect Linkedin', id: 'linkedinauth'), user_omniauth_authorize_path(:linkedin) %>
<% end %>
</td>
</tr>
<tr>
<td><i class="fa fa-twitter"></i></td>
<td>
<% if @user.identity.provider includes 'twitter' %>
<span class="glyphicon glyphicon-ok"</span>
<% else %>
<%= link_to icon('Connect Twitter', id: 'twitterauth'), user_omniauth_authorize_path(:twitter) %>
<% end %>
</td>
</tr>
</table>
Я хочу показать это частичное в форме редактирования профиля.
<div class="formheader">Update your profile</div>
<div class="row">
<div class="col-md-10 col-md-offset-1">
<%= render 'form' %>
<%= render 'users/authentication' %>
</div>
</div>
Я не могу понять, как писать цепь так, что когда пользователь обновляет свой профиль, они могут подключаться другие учетные записи социальных средств массовой информации в их идентичности.
Может ли кто-нибудь увидеть, где я ошибся?
Я пытался несколько различных вещей, чтобы получить эти цепи, связанные в том числе:
<% if @profile.user.identity.provider == 'facebook' %>
<% if @current_user.profile.identity.provider == 'facebook' %>
<% if @user.profile.identity.provider == 'facebook' %>
Im просто угадать с этим - я не могу понять это. Может ли кто-нибудь увидеть, что я сделал неправильно?
ОК жаль, если я не даю много объяснений здесь, но, надеюсь, вы найдете ответы здесь: https://github.com/charly/omnidevisable – charlysisto
Привет Charly. Спасибо за это. Я изо всех сил пытаюсь понять это в течение 3 лет. Я собираюсь сделать этот подход еще одним выстрелом, прежде чем я сброшу его и попробую что-то еще, но я прочитал ваш блог и благодарю вас за то, что вы поделились. В моих записях, если я удалю все, что я пробовал до сих пор, и начну снова (что будет только в 30-й раз, когда я сделал это до этого момента) – Mel